/**
 * 问题：
 * 链接：
 * 时间复杂度：O();
 * 空间复杂度：O();
 */
import java.util.Scanner;

public class Main {
    /**
     * 问题：牛牛冲钻五
     * 链接：https://ac.nowcoder.com/acm/problem/227309
     * 时间复杂度：O(1);
     * 空间复杂度：O(1);
     */
    public static void main1(String[] args){
        Scanner in = new Scanner(System.in);

        int t = in.nextInt();
        while(t-- != 0){
            int n = in.nextInt();
            int k = in.nextInt();
            in.nextLine();
            char[] ch = in.nextLine().toCharArray();
            int ret = 0;
            for(int i = 0;i < n;i++){
                if(ch[i] == 'L') ret -= 1;
                else{
                    if(i - 1 >= 0 &&  i- 2 >= 0 && ch[i - 1] == 'W' && ch[i - 2] == 'W')
                        ret += k;
                    else ret += 1;
                }
            }
            System.out.println(ret);
        }

    }

    /**
     * 问题：最长无重复子区间
     * 链接：https://www.nowcoder.com/practice/b56799ebfd684fb394bd315e89324fb4?tpId=196&tqId=37149&ru=/exam/oj
     * 时间复杂度：O(N);
     * 空间复杂度：O(N);
     */
    public int maxLength (int[] arr) {
        int[] hash = new int[100010];

        int left = 0,right = 0,ret = 0;
        while(right < arr.length){
            hash[arr[right]]++;

            while(hash[arr[right]] > 1){
                hash[arr[left]]--;
                left++;
            }

            ret = Math.max(ret ,right - left + 1);
            right++;
        }

        return ret;
    }

    /**
     * 问题：重排字符串
     * 链接：https://ac.nowcoder.com/acm/problem/222104
     * 时间复杂度：O(N);
     * 空间复杂度：O(1);
     */
    public static void main(String[] args){
        Scanner in = new Scanner(System.in);

        int n = in.nextInt();
        char[] s = in.next().toCharArray();

        //定义次数最多的字母
        //定义次数
        char maxChar = '0';
        int maxCnt = 0;
        int[] hash = new int[26];
        for(int i = 0;i < n;i++){
            if(++hash[s[i] - 'a'] > maxCnt){
                maxChar = s[i];
                maxCnt = hash[s[i] - 'a'];
            }
        }

        //判断是否能排序
        if(maxCnt > (n + 1) / 2) System.out.println("no");
        else{
            System.out.println("yes");
            char[] ret = new char[n];
            //1.处理次数最多的字符
            int i = 0;
            while(maxCnt-- != 0){

                ret[i] = maxChar;
                i += 2;
            }
            //2.填写其他字符
            for(int j = 0;j < 26;j++){
                if(hash[j] != 0 && maxChar != j + 'a'){
                    while(hash[j]-- != 0){
                        if(i >= n) i = 1;
                        ret[i] = (char)(j + 'a');
                        i += 2;
                    }
                }
            }
            for(char x : ret) System.out.print(x);
        }
    }

}